package exo1;


	import java.io.BufferedReader;
	import java.io.FileInputStream;
	import java.io.FileNotFoundException;
	import java.io.FileReader;
	import java.io.PrintWriter;
	import java.util.NoSuchElementException;
	import java.util.Scanner;

	/**
	 * classe vehicule pour avoir les informatons sur un vehicule  
	 * @author mokanout
	 *
	 *on vas utiliser 2 constructeurs 
	 */
	public class Vehicule {
	        private  int   id;
	        private String marque;
	        private String modele;
	        private int annee;
	        private double km;
	        private int prix ;
	        private int exemplaire;
	        public Vehicule() {
	                super();
	                this.id = id;
	                this.marque = marque;
	                this.modele = modele;
	                this.annee = annee;
	                this.km = km;
	                this.prix = prix;
	                this.exemplaire = exemplaire;
	        }
	        public Vehicule(int id,String marque,String modele,int annee,int km,int prix,int exemplaire){
	        	 super();
	                this.id = id;
	                this.marque = marque;
	                this.modele = modele;
	                this.annee = annee;
	                this.km = km;
	                this.prix = prix;
	                this.exemplaire = exemplaire;
	        }
	        @Override
	        public String toString() {
	                return "Vehicule [id=" + id + ", marque=" + marque + ", modele="
	                                + modele + ", annee=" + annee + ", km=" + km + ", prix=" + prix
	                                + ", exemplaire=" + exemplaire + "]";
	        }
	        @Override
	        public int hashCode() {
	                final int prime = 31;
	                int result = 1;
	                result = prime * result + annee;
	                result = prime * result + exemplaire;
	                result = prime * result + id;
	                long temp;
	                temp = Double.doubleToLongBits(km);
	                result = prime * result + (int) (temp ^ (temp >>> 32));
	                result = prime * result + ((marque == null) ? 0 : marque.hashCode());
	                result = prime * result + ((modele == null) ? 0 : modele.hashCode());
	                result = prime * result + prix;
	                return result;
	        }
	        @Override
	        public boolean equals(Object obj) {
	                if (this == obj)
	                        return true;
	                if (obj == null)
	                        return false;
	                if (getClass() != obj.getClass())
	                        return false;
	                Vehicule other = (Vehicule) obj;
	                if (annee != other.annee)
	                        return false;
	                if (exemplaire != other.exemplaire)
	                        return false;
	                if (id != other.id)
	                        return false;
	                if (Double.doubleToLongBits(km) != Double.doubleToLongBits(other.km))
	                        return false;
	                if (marque == null) {
	                        if (other.marque != null)
	                                return false;
	                } else if (!marque.equals(other.marque))
	                        return false;
	                if (modele == null) {
	                        if (other.modele != null)
	                                return false;
	                } else if (!modele.equals(other.modele))
	                        return false;
	                if (prix != other.prix)
	                        return false;
	                return true;
	        }
	        /**
	         * methode pour lire dans le flux les informations sur le vehicule 
	         * @param sc
	         */
	        public void readData(Scanner sc) {
	                while (true)
	                {
	                        try
	                    {
	                        	String line = sc.nextLine() ;
	                            String[] tokens = line.split("\\|");
	                            this.setId(Integer.parseInt(tokens[0]));
	                            this.setMarque(tokens[1]);
	                            this.setModele(tokens[2]);
	                            this.setAnnee(Integer.parseInt(tokens[3]));
	                            this.setKm(Integer.parseInt(tokens[4]));
	                            this.setPrix(Integer.parseInt(tokens[5]));
	                            this.setExemplaire(Integer.parseInt(tokens[6]));
	                            System.out.println(this.toString());
	                    }
	                    catch (NoSuchElementException exception)
	                    {
	                        break;
	                    }
	                }                
	                //scanner.close();
	        }
	                
	                
	        /**
	         * methode pour ecrire dans le flux les informations sur le vehicule 
	         * @param out
	         */
	        public void writeData(PrintWriter out){
	                out.println("\n"+this.getId()+"|"+this.getMarque()+"|"+this.getModele()+"|"+this.getKm()+"|"+this.getAnnee()+"|"+this.getExemplaire());
	        }
	        // getter et setter de la classe 
	        public String getMarque() {
				return marque;
			}
			public void setMarque(String marque) {
				this.marque = marque;
			}
			public String getModele() {
				return modele;
			}
			public void setModele(String modele) {
				this.modele = modele;
			}
			public int getId() {
	                return id;
	        }
	        public void setId(int id) {
	                this.id = id;
	        }
	        public int getAnnee() {
	                return annee;
	        }
	        public void setAnnee(int annee) {
	                this.annee = annee;
	        }
	        public double getKm() {
	                return km;
	        }
	        public void setKm(double km) {
	                this.km = km;
	        }
	        public int getPrix() {
	                return prix;
	        }
	        public void setPrix(int prix) {
	                this.prix = prix;
	        }
	        public int getExemplaire() {
	                return exemplaire;
	        }
	        public void setExemplaire(int exemplaire) {
	                this.exemplaire = exemplaire;
	        }
	        


}
